説明
バグレポート
「RouteInformation.location」の移行ガイド
まとめ
RouteInformation.location
および関連する API は非推奨になりました
有利にRouteInformation.uri
。
コンテクスト
のRouteInformation
権限情報が必要です
さまざまな Web ドメインからのモバイル ディープリンクを処理します。
のuri
フィールドが追加されましたRouteInformation
それを捕らえます
ディープリンク全体の情報とルート関連のパラメータ
完全に変換されましたUri
フォーマット。
これにより、互換性のない API は非推奨になりました。
変更内容の説明
- の
RouteInformation.location
に置き換えられましたRouteInformation.uri
。 - の
WidgetBindingObserver.didPushRoute
廃止されました。 - の
location
のパラメータSystemNavigator.routeInformationUpdated
だった 新しく追加されたものに置き換えられますuri
パラメータ。
移行ガイド
移行前のコード:
const RouteInformation myRoute = RouteInformation(location: '/myroute');
移行後のコード:
final RouteInformation myRoute = RouteInformation(uri: Uri.parse('/myroute'));
移行前のコード:
final String myPath = myRoute.location;
移行後のコード:
final String myPath = myRoute.uri.path;
移行前のコード:
class MyObserverState extends State<MyWidget> with WidgetsBindingObserver {
@override
Future<bool> didPushRoute(String route) => _handleRoute(route);
}
移行後のコード:
class MyObserverState extends State<MyWidget> with WidgetsBindingObserver {
@override
Future<bool> didPushRouteInformation(RouteInformation routeInformation) => _handleRoute(
Uri.decodeComponent(
Uri(
path: uri.path.isEmpty ? '/' : uri.path,
queryParameters: uri.queryParametersAll.isEmpty ? null : uri.queryParametersAll,
fragment: uri.fragment.isEmpty ? null : uri.fragment,
).toString(),
)
);
}
移行前のコード:
SystemNavigator.routeInformationUpdated(location: '/myLocation');
移行後のコード:
SystemNavigator.routeInformationUpdated(uri: Uri.parse('/myLocation'));
タイムライン
リリースされたバージョン: 3.9.0-18.0.pre-93-gf9095ef022
安定版リリース: TBD
参考文献
関連する PR:
- PR 119968: URL サポートを実装します。 RouteInformation と DidPushRouteInformation。